The invention relates generally to graphical user interface design and more particularly to a means for specifying a graphical user interface object in a procedural and largely display resolution independent manner.
Designing an efficient, ergonomic and aesthetically pleasing user interface is an integral stage of most application development projects. The graphical user interface (“GUI”) is what the user sees and interacts with. Accordingly, the GUI must present information and choices to a user in a way that is not only pleasing and natural to the eye but conducive to efficient use of the underlying application. One major concern in the development of modern GUIs is the resolution of the various objects that comprise the GUI. Typically, a designer designs a graphical user interface object (e.g., a pushbutton, scrollbar, or slider) for a specified resolution. As the resolution of the user's display changes, however, display of the originally designed object may become distorted. This is particularly a problem when a graphical object is designed at a first resolution (e.g., 75 or 100 pixels per inch) and the user's display is at a second, higher resolution (e.g., 120 or 150 pixels per inch).
In the past, two general techniques have been used to address the problem associated with displaying objects designed for a first resolution but which are displayed at a second resolution. In the first, an original (low resolution) object is up-sampled to generate a larger image (e.g., through linear or bicubic interpolation). This technique results in blurry edges such that the user interface no longer looks crisp. In the second, an original object is designed for display at a high resolution and is then down-sampled to an unknown target resolution. While useful in some circumstances, it is not possible a priori to know what width to give a line (e.g., an object's edge) at the higher resolution such that when down-sampled it remains crisp. This is particularly true when there are multiple target resolutions. Thus, both up-sampling and down-sampling techniques tend to disturb the designer's specified line width. One of ordinary skill in the art will recognize that line width is a critical factor in GUI design as the width of lines define the edge of graphical objects. If edges appear blurry or ill-defined, the entire GUI design may be compromised.
Thus, it would be beneficial to provide a means to specify the design of a graphical user interface object independent of its display resolution. Such a description may advantageously be used by a rendering module to display the designed object at substantially any resolution.